home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / test / test4.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  822 b   |  54 lines  |  [TEXT/R*ch]

  1. fun map f [] = []
  2.   | map f (x :: xs) = f x :: map f xs;
  3.  
  4. map (fn n => n+1) [1,2,3];
  5.  
  6. infix 5 ++;
  7.  
  8. fun [] ++ ys = ys
  9.   | (x :: xs) ++ ys = x :: (xs ++ ys);
  10.  
  11. [1,2,3] ++ [4,5,6];
  12.  
  13. fun reverse xs =
  14.   let
  15.     infix -->
  16.     fun [] --> ys = ys
  17.       | (x::xs) --> ys = xs --> (x::ys)
  18.   in xs --> [] end;
  19.  
  20. reverse [1,2,3,4];
  21. reverse [true,false];
  22.  
  23. infix 3 o;
  24. fun (f o g) x = f(g x);
  25.  
  26. let 
  27.     val I = reverse o reverse
  28. in
  29.     I [1,2,3]
  30. end;
  31.  
  32. val zl = [(1,true),(2,false),(3,true)];
  33.  
  34. fun fst (x,_) = x;
  35. fun snd (_,y) = y;
  36.  
  37. map fst zl;
  38.  
  39. fun split [] = ([],[])
  40.   | split ((x,y) :: rest) =
  41.       let val (xs,ys) = split rest in
  42.         (x :: xs, y :: ys)
  43.       end;
  44.  
  45. split zl;
  46.  
  47. fun member a [] = false
  48.   | member a (x::xs) =
  49.       case a=x
  50.         of true => true
  51.          | false => member a xs;
  52. member 3 [1,2,3,4];
  53. member 3 [1,2];
  54.